package com.bbseguros.pesquisador.action;

import java.util.List;

import org.apache.log4j.Logger;

import com.bbseguros.pesquisador.bean.MonitoramentoBean;
import com.bbseguros.pesquisador.bean.ResultadoPesquisaBean;
import com.bbseguros.pesquisador.bean.UserBean;
import com.bbseguros.pesquisador.middle.MonitoramentosMiddle;
import com.bbseguros.pesquisador.middle.UserMiddle;
import com.bbseguros.pesquisador.util.DateUtils;
import com.bbseguros.pesquisador.xml.XMLMessageUtil;
import com.opensymphony.xwork2.ActionSupport;

/**
 * @author rrodrigues
 *
 */
public class MonitoramentosAction extends ActionSupport {
	
	private static final long serialVersionUID = 1L;
	private String functionType;
	private String selectedUser;
	private List<UserBean> usersList;
	private MonitoramentoBean monitoramento;
	private List<MonitoramentoBean> monitoramentos;
	private ResultadoPesquisaBean resultado;
	
	private static Logger logger = Logger.getLogger(MonitoramentosAction.class);

	public String execute() {
		usersList = UserMiddle.getListUsers();
		return SUCCESS;
	}
	
	public void validate() {
		if (getMonitoramento() != null) {

			if (getMonitoramento().getDataInicio() != null) {
				if (getMonitoramento().getDataInicio().length() == 0) {
					addFieldError("monitoramento.init_period", getText("period.required"));
				}
			}

			if (getMonitoramento().getDataFim() != null) {
				if (getMonitoramento().getDataFim().length() == 0) {
					addFieldError("monitoramento.end_period", getText("period.required"));
				}
			}

			if (selectedUser != null) {
				if(selectedUser.equals("-1")){
					addFieldError("monitoramento.grupo", getText("user.required"));	
				}
				
			}

		}
	}
	
	public String searchMonitors(){
		logger.debug("Selected User: "+selectedUser);
		monitoramento.setIdUsuario(Integer.parseInt(selectedUser));
		monitoramento.setDataInicio(DateUtils.formatMySqlDate(monitoramento.getDataInicio()));
		monitoramento.setDataFim(DateUtils.formatMySqlDate(monitoramento.getDataFim()));

		monitoramentos = MonitoramentosMiddle.getMonitoramentos(monitoramento);

		int qtde = monitoramentos.size(); 
		
		logger.debug("Listsize: "+monitoramentos.size());
		
		if(qtde > 0) {
			setFunctionType("showRegistries");
			return "viewAll";
		} else {
			logger.debug(getText("lista.vazia"));
			addActionError(getText("lista.vazia"));
			return ERROR;
		}
	}
	
	/**
	 * @return
	 */
	public String detail(){
		monitoramento = MonitoramentosMiddle.getMonitoramentosById(monitoramento);
		XMLMessageUtil xml = new XMLMessageUtil();
		resultado = xml.formatResultado(monitoramento.getResultadoPesquisa());
		return "detail";
	}
	
	public String getMap(){				
		return "map";
	}
	
	public String getFunctionType() {
		return functionType;
	}
	
	public void setFunctionType(String functionType) {
		this.functionType = functionType;
	}
	
	public List<UserBean> getUsersList() {
		return usersList;
	}

	public void setUsersList(List<UserBean> usersList) {
		this.usersList = usersList;
	}

	public String getSelectedUser() {
		return selectedUser;
	}

	public void setSelectedUser(String selectedUser) {
		this.selectedUser = selectedUser;
	}

	public MonitoramentoBean getMonitoramento() {
		return monitoramento;
	}

	public void setMonitoramento(MonitoramentoBean monitoramento) {
		this.monitoramento = monitoramento;
	}

	public List<MonitoramentoBean> getMonitoramentos() {
		return monitoramentos;
	}

	public void setMonitoramentos(List<MonitoramentoBean> monitoramentos) {
		this.monitoramentos = monitoramentos;
	}

	public ResultadoPesquisaBean getResultado() {
		return resultado;
	}

	public void setResultado(ResultadoPesquisaBean resultado) {
		this.resultado = resultado;
	} 
}
